import { useUserStoreWithOut } from '@/store/modules/user'
import { RouteLocationNormalizedLoaded } from 'vue-router'

/**
 * 检查按钮/组件是否具有权限显示
 * @param permission 权限标识符
 * @returns boolean 是否有权限
 */
export function checkPermission(
  route: RouteLocationNormalizedLoaded,
  permission?: string
): boolean {
  const userStore = useUserStoreWithOut()

  // 获取用户信息
  const userInfo = userStore.getUserInfo
  if (userInfo) {
    // roleId为1的超级管理员拥有所有权限
    if (userInfo.roleId === 1) {
      return true
    }
  }

  // 如果没有设置权限标识，则默认有权限
  if (!permission) {
    return true
  }

  // 处理权限标识字符串
  const value = permission.replace(/'/g, '')
  const components = (route.meta?.components || []) as Array<string>
  const requiredPerms = Array.isArray(value) ? value : [value]

  // 检查是否存在交集
  return requiredPerms.some((perm) => components.includes(perm))
}
